package com.hnchances.studentscoresystem.dto.request;

import lombok.Data;

import java.util.Date;

/**
 * 用户注册请求DTO
 * 对应接口：/user/register（无鉴权）
 * 支持身份：0-学生，1-老师（管理员注册免做）
 */
@Data
public class UserRegisterDTO {

    /**
     * 用户名（登录账号，唯一）
     * 约束：非空，长度1-32位（匹配数据库user表userName字段）
     */
    private String userName;

    /**
     * 密码（明文，后端存储时MD5加密）
     * 约束：非空，建议长度6-20位（匹配数据库user表passWord字段加密前需求）
     */
    private String passWord;

    /**
     * 电话号码（11位手机号）
     * 约束：非空，严格11位数字（匹配数据库user表phone字段）
     */
    private String phone;

    /**
     * 真实姓名
     * 约束：非空，长度1-120位（匹配数据库user表trueName字段）
     */
    private String trueName;

    /**
     * 用户身份（0-学生，1-老师）
     * 约束：非空，仅允许0或1（管理员身份免做，匹配数据库user表identity字段）
     */
    private Integer identity;

    /**
     * 班级ID（关联class表id）
     * 约束：非空（学生/老师均需关联班级，匹配数据库user表classID字段）
     */
    private Integer classID;

    /**
     * 课程ID（关联course表id）
     * 约束：老师注册非空，学生注册可空（匹配数据库user表courseID字段，仅老师需关联课程）
     */
    private Integer courseID;

    /**
     * 身份证号（仅学生注册需填写）
     * 约束：学生注册非空（用于关联student表，验证班级是否存在该学生，匹配数据库student表idcard字段）
     */
    private String idCard;

    /**
     * 出生年月（仅学生注册需填写，辅助验证身份）
     * 约束：学生注册非空（匹配数据库student表birthday字段）
     */
    private Date birthday;
}